package org.dromara.common.translation.core.impl;

import org.dromara.common.core.service.UserService;
import org.dromara.common.translation.annotation.TranslationType;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.common.translation.core.TranslationInterface;
import lombok.AllArgsConstructor;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：用户名翻译实现
 */
@AllArgsConstructor
// 指定翻译类型为用户ID转换为用户名
@TranslationType(type = TransConstant.USER_ID_TO_NAME)
/**
 * 用户名翻译实现类
 * 本类实现了TranslationInterface接口，专门用于用户名的翻译操作
 * 选择String作为泛型参数，意味着翻译的输入和输出都是字符串形式
 */
public class UserNameTranslationImpl implements TranslationInterface<String> {

    /**
     * 通用 用户服务
     */
    private final UserService userService;

    /**
     * 根据提供的键值翻译成相应的用户名
     *
     * @param key 被翻译的键值，可以是长整型的用户ID
     * @param other 未使用，保留以便未来扩展
     * @return 如果键值是用户ID，则返回相应的用户名；否则返回null
     */
    @Override
    public String translation(Object key, String other) {
        // 检查键值是否为长整型ID，如果是，转换并返回相应的用户名
        if (key instanceof Long id) {
            return userService.selectUserNameById(id);
        }
        // 如果键值不是长整型ID，或者其他情况，返回null
        return null;
    }
}
